package com.juejin.www.dao;

import com.juejin.www.model.DO.Article;
import com.juejin.www.model.DTO.ArticleDTO;
import org.apache.ibatis.annotations.*;
import java.util.List;

/**
 * @author Jacky
 */
@Mapper
public interface ArticleDao {

    /**
     * 获取所有文章
     * @param begin 开始索引
     * @param pageSize 查询数目
     * @return 文章列表
     */
    @Select("select * from articles limit #{begin},#{pageSize}")
    List<Article> list(Integer begin,Integer pageSize);

    /**
     * 获取文章总数
     * @return 文章总数
     */
    @Select("select count(*) from articles")
    Integer getTotalCount();

    /**
     * 根据id获取文章
     * @param id 文章id
     * @return 文章实体
     */
    @Select("select id,title,content,author_id,create_time,update_time,like_count,comment_count from articles where id = #{id}")
    Article read(Integer id);

    /**
     *根据id获取文章浏览量
     * @param id 文章id
     * @return 文章浏览量
     */
    @Select("select view_count from articles where id = #{id}")
    Integer getViewCount(Integer id);

    /**
     * 浏览文章后为文章添加浏览量
     * @param id 文章id
     */
    @Update("update articles set view_count = view_count+1 where id = #{id}")
    void addViewCount(Integer id);

    /**
     * 发布文章
     * @param articleDTO 文章实体
     */
    @Insert("insert into articles(id,title,content,author_id,create_time,update_time,view_count,like_count,comment_count)" +
            "values (null,#{title},#{content},#{authorId},now(),now(),0,0,0)")
    void addArticle(ArticleDTO articleDTO);

    /**
     * 删除文章
     * @param id 文章id
     */
    @Delete("delete from articles where id=#{id}")
    void deleteArticle(Integer id);

}
